package com.sunday.common.spring.study;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;

@Slf4j
/**
 * 样例: {@link KafkaAutoConfiguration}
 */
@AutoConfiguration
/**
 * kafka加载过程
 *
 * @ConditionalOnClass(MyAnnotation.class) 是一个条件注解，它用于在特定类存在于类路径上时才加载和应用配置。
 * 具体来说，当使用 @ConditionalOnClass 注解时，Spring 在启动过程中会检查是否存在指定的类（这里是 MyAnnotation.class）。如果该类存在于类路径上，则相应的配置将被加载和应用。如果该类不存在，则相应的配置将被忽略。
 * 这个条件注解可以用于根据类的存在与否来控制特定的配置行为。例如，在编写一个自定义的自动配置类时，可以使用 @ConditionalOnClass 来确保只有当某个关键的类可用时才应用自动配置。
 * 总之，@ConditionalOnClass 注解用于在特定类存在于类路径上时进行条件化的配置加载。
 */
//@ConditionalOnClass(MyAnnotation.class)
//public class MyAutoConfiguration {
//
//    /**
//     * {@link org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration.EnableKafkaConfiguration}
//     */
//    @Configuration(proxyBeanMethods = false)
//    @MyAnnotation
//    @ConditionalOnMissingBean(name = "myAnnotationConfiguration")
//    static class MyAnnotationConfiguration {
//
//    }
//
//}

/**
 * dubbo加载过程
 * {@link org.apache.dubbo.spring.boot.autoconfigure.DubboAutoConfiguration}
 */
@MyAnnotation
public class MyAutoConfiguration {
}
